查看原文
其他

美丽的在线底图?可能真的不是那么好用

你个海怪 GIS荟 2022-05-20
点击上方蓝字,关注我带你飞!

前言:使用在线底图可以快速制作好看、漂亮的专题图?但是事实可能会让你们失望,同时也让我非常失望...



在线底图

在线底图是一个不怎么官方的统称,主要是指 WMS、WMTS、WCS...等等服务。反正很多,简单来说就是通过服务器发布的在线地图服务,在不同的平台和客户端之间以一种开放并经认可的方式提供缓存地图或影像服务。

现在市面上有着各种在线底图服务及其服务商,比如 Mapbox、Map tiler、包括百度高德都是。
其使用数据多是 OSM 数据。道路、水系、建筑物等等一个不缺,同时兼顾漂亮、可自定义的地图样式。
话不多说,先看加载到 ArcGIS 或者 QGIS 里面的效果。(以下展示的在线底图均是使用 Mapbox 的服务)

lightcolor_notext


monochrome


outdoor


怎么样,是不是觉得效果很惊艳。
在线底图为你提供了海量的数据,同时有着精美的样式,直接把我们的专题图数据图层叠加在上面,然后输出成果,是不是事半功倍?用很少的时间,又能制作出非常精美的专题图或设计图。
这仿佛打开了新世界的大门!



添加 WMTS 服务

既然效果这么好,那么我们就添加几个在线底图服务吧。
WMTS 就是在线底图服务的一个规范。
选择添加 WMTS 服务。即 Web Map Tile Service(WMTS),是开放地理空间联盟 (OGC) 提出的地图切片服务规范。将服务端的地图数据切分成栅格瓦片分发给不同的平台和客户端,以降低服务器的负荷,提高客户端的体验。

Mapbox 提供免费的 WMTS 服务,不过要获得官方提供的服务地址链接,就需要你先注册一个账号。
具体如何使用 ArcGIS 和 QGIS 获得 Mapbox的在线底图服务地址,可以查阅官方说明:https://docs.mapbox.com/help/tutorials/mapbox-arcgis-qgis/
如果你嫌麻烦的话,可以使用我提供的 WMTS 服务的地址链接。
我会在后文放几条我用到的 WMTS 服务的地址链接,可以直接添加使用。

有了链接后,添加 WMTS 服务非常简单,只需要点点就行。
在 ArcGIS 目录中点击最下面的添加WMTS服务器


在下面的 URL 框中输入在线底图服务地址。输入地址链接后直接点击确认,不用输入密码。


点击确认后,会再出现下面这个界面,直接点击取消


完成后,后面会出现底图服务,点击进入,出现的 Monohrome 就是我们具体的在线底图啦。




致命问题

终于完成了,你开开心心的把优美漂亮的在线底图添加到 ArcGIS 中,加载好其他数据图层。
对,你准备出图了,你试着导出一张看看。
然后...


导出的在线底图模糊, 无法使用于生产环境,就算是我自己玩的图我都忍受不了。
下面有两张从 ArcGIS 中导出的地图裁剪下来的部分地图,出图尺寸为 A4 大小,300DPI。为了原汁原味,裁剪下来的图和原图都没有缩放和压缩。
下面蓝色主色调的裁剪图是使用在线底图导出的地图 P1
白色主色调的裁剪图是使用原生数据制作导出的地图 P2

可以明显看到,地图 P1 字体模糊,建筑轮廓同样模糊。而地图 P2 字体清晰、建筑轮廓也是非常清晰的。

使用在线底图导出的地图 P1


使用原生数据制作导出的地图 P2


是个人都知道这狗屎一般的清晰度不对。
于是我开始寻找解决方法和导致该问题的原因。



到底是什么问题呢

我先是调整 DPI 大小,从300调整到600,字变小了,同样模糊。
这个问题我折腾了很久。我还同时测试了 QGIS3.16 中自带的 XYZ Tiles 在线 osm 瓦片地图及其 Maptiler 插件所提供的在线底图,结果都在意料之中:普通界面看上去比较正常,一旦导出地图,其打印质量、分辨率就很低。

原因

最终还是祭出了谷歌大大
我大致搞清楚了为什么在线底图会模糊:
  • 首先在线底图使用的是动态地图常用的比例显示范围,即分级显示。系统根据地图放大的级别,显示对应的地形地物和符号。

    所以,当你使劲放大地图希望能改善字体的清晰度基本是不可能的。

  • 然后最主要的问题就是栅格瓦片。那么什么是栅格瓦片呢?

    就像名字一样,完整的地图被分成了很多个小块,就像瓦片一样,每个瓦片都有自己 XYZ 坐标,根据情况进行显示和隐藏,并且是呈金字塔结构的。

    我们接收的在线底图就是服务器端渲染好后裁切的栅格瓦片,所以仅仅是栅格图,并不是矢量数据分发到你的客户端,并且这个栅格瓦片的分辨率只有 96 DPI。

    这就是打印模糊,质量完全无法和本地数据相比的原因。


解决方法

使用矢量瓦片

现在电子地图有一种新技术,叫做矢量瓦片(Vector Tiles),不同于栅格瓦片(Raster Tiles)基于图像。矢量瓦片是矢量形式的切片。
其实 Mapbox 一直使用的就是矢量瓦片,可是不知道为什么使用 Mapbox 的 WMTS 服务就是很模糊?
或许可能使用矢量瓦片可以解决打印分辨率低的问题吧。

QGIS 中的 Maptiler 插件可以选择加载矢量瓦片,感兴趣的可以试试。


Mapnik

Mapnik 是用于渲染地图的开源工具包。Mapnik用C ++编写,可以使用诸如JavaScript(Node.js),Python,Ruby和Java之类的绑定语言编写脚本。它使用AGG渲染库,并提供亚像素精度的抗锯齿渲染。
根据网上找到的资料,可以通过使用 Mapnik 解决模糊问题。
该工具支持 Python2.7,门槛相对较低,还是非常容易使用的。
官方安装教程:https://github.com/mapnik/mapnik/wiki/WindowsInstallation

问题解决方面的参考

[1] Mapbox WMTS layer in QGIS poor print quality. https://gis.stackexchange.com/questions/297672/mapbox-wmts-layer-in-qgis-poor-print-quality
[2] QGIS-Developer WMTS/XYZ on high DPI screens. http://osgeo-org.1560.x6.nabble.com/QGIS-Developer-WMTS-XYZ-on-high-DPI-screens-td5396441.html
[3] QGIS 3.0 XYZ Tile 'OpenStreetMap' Text is Too Small to See. https://gis.stackexchange.com/questions/276323/qgis-3-0-xyz-tile-openstreetmap-text-is-too-small-to-see
[4] Mapnik.https://wiki.openstreetmap.org/wiki/Mapnik



结束语

对于在线底图,起初是看到别的公众号写的,还一连写了好多篇,介绍各种在线底图如何好,如何妙,我看的激动啊,想起最近要制作一系列的项目专题图,就想着把这玩意儿弄来当做底图使用,那不是很安逸?


结果,让我非常伤心,我还研究到半夜2、3点,结果还是不行。

也不是说在线底图不能使用,只是对于国土、农业、水利等项目制图,需要打印高分辨率地图的项目是无法使用的。
恩.... 或许还有其他解决方案嘛,有知道的老板戳公众号后台给我说一下嘛,非常感谢。
我这个垃圾号不能留言服了。

答应大家的服务地址链接放到下面啦!
WMTS Mapbox URL:

monochrome
https://api.mapbox.com/styles/v1/hygnic/cknwwnz2f2roy17p8ug9n2suf/wmts?access_token=pk.eyJ1IjoiaHlnbmljIiwiYSI6ImNrbWhnaWN2MjA2OW4yd3F3M3RzYmtpMG8ifQ.Pehqy8AFiADE4k3-Ddefbw

lightcolor_notext
https://api.mapbox.com/styles/v1/hygnic/cknvm79551rjv17l8ch05teeh/wmts?access_token=pk.eyJ1IjoiaHlnbmljIiwiYSI6ImNrbWhnaWN2MjA2OW4yd3F3M3RzYmtpMG8ifQ.Pehqy8AFiADE4k3-Ddefbw

standard
https://api.mapbox.com/styles/v1/hygnic/cknvw0awq1z6x17mfkmf33nq1/wmts?access_token=pk.eyJ1IjoiaHlnbmljIiwiYSI6ImNrbWhnaWN2MjA2OW4yd3F3M3RzYmtpMG8ifQ.Pehqy8AFiADE4k3-Ddefbw

outdoor
https://api.mapbox.com/styles/v1/hygnic/ckmhgr9mx09w317s636eb1su6/wmts?access_token=pk.eyJ1IjoiaHlnbmljIiwiYSI6ImNrbWhnaWN2MjA2OW4yd3F3M3RzYmtpMG8ifQ.Pehqy8AFiADE4k3-Ddefbw

其它 WMTS URL:

ChinaOnlineStreetPurplishBlue
https://api.mapbox.com/styles/v1/hygnic/ckmhgr9mx09w317s636eb1su6/wmts?access_token=https://map.geoq.cn/arcgis/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/WMTS/1.0.0/WMTSCapabilities.xml



分享GIS,不止于Python。
荟GIS精粹,关注我,带你飞!
(长按扫码也行)


很难的文章系列:
...

不难的有趣文章系列:
  • 《从地图发现世界》——从地图,发现奇特的、美丽的、我的世界。(持续更新中!)

  • 《制图艺术》——制作不出优美的地图?进来看看是不是缺点东西(持续更新中!)

...


更多文章可以使用搜索哦


欢迎交流
原创不易,老板点点下方的 收藏在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存